import copy


def demo_浅拷贝可变类型():
    a = [1, 2, 3]
    b = [11, 22, 33]
    c = [6, 7, a, b]

    # 测试1， id(c)和id(d)
    d = copy.copy(b)
    print("id(b)->", id(c))
    print("id(d)->", id(d))
    print("id(c)和id(d)值不一样，说明浅拷贝第一层（最外面一层的数据）")

    # 测试2
    print(c[2])
    print(id(c[2]))
    print(id(a))
    print("id(c[2])和id(a)值一样，说明浅拷贝第二层的数据")

def demo_浅拷贝不可变类型():
    a = (1, 2, 3)
    b = (11, 22, 33)
    c = (6, 7, a, b)

    d = copy.copy(c)
    print("id(c)->", id(c))
    print("id(d)->", id(d))
    print("id(c)和id(d)值一样，说明c和d指向相同的内存空间")

    """
    因为不可变类型本身值不能被修改，所以没有再浪费空间。
    因此要拷贝不可变类型，python解释器会直接返回地址
    """

demo_浅拷贝不可变类型()